package dao;

import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

import daosbd.DaoGenericoJPA;
import excecoes.DAOException;

import allaboutmybook.PontoPositivo;

public class DaoConcretoPontosPositivosQueOLivroTem extends DaoGenericoJPA<PontoPositivo> implements DaoPontosPositivosQueOLivroTem
{
	
	
	public DaoConcretoPontosPositivosQueOLivroTem()
	{
		
	}

	@Override
	public LinkedList<PontoPositivo> pegarTodosOsPontosPositivosDoLivro() throws DAOException
	{
		LinkedList<PontoPositivo> linkedListTodosOsPontosPositivosDoLivro =
				new LinkedList<PontoPositivo>();
		try
		{
			@SuppressWarnings("unchecked")
			List<PontoPositivo> todosOsPontosPositivosDoLivro =	this.encontrarTodos();
			Iterator<PontoPositivo> iteraTodosOsPontosPostivos =
					todosOsPontosPositivosDoLivro.iterator();
			while(iteraTodosOsPontosPostivos.hasNext() == true)
			{
				linkedListTodosOsPontosPositivosDoLivro.add(iteraTodosOsPontosPostivos.next());
			}
			
			return linkedListTodosOsPontosPositivosDoLivro;
		}
		catch(DAOException e)
		{
			throw new DAOException(e);
		}
	}

	@Override
	public void adicionarPontoPositivoParaOLivro(PontoPositivo pontoPositivo) throws DAOException
	{
		try
		{
			String nomePontoPositivo = pontoPositivo.getNome();
			PontoPositivo pontoPositivoComEsseNome = this.encontrarPorId(nomePontoPositivo);
			
			if(pontoPositivoComEsseNome == null)
			{
				this.adicionarEntidade(pontoPositivo);
			}
		}
		catch(DAOException e)
		{
			throw new DAOException(e);
		}
	}


	@Override
	public void removerPontoPositivoParaOLivro(PontoPositivo pontoPositivo) throws DAOException
	{
		try
		{
			String nomePontoPositivo = pontoPositivo.getNome();
			this.removerEntidade(nomePontoPositivo);
		}
		catch(DAOException e)
		{
			throw new DAOException(e);
		}
	}

	@Override
	public boolean livroPossuiPontoPositivoComEsseNome(String nomePontoPositivo) throws DAOException
	{
		try
		{
			PontoPositivo pontoPositivoComEsseNome = this.encontrarPorId(nomePontoPositivo);
			
			if(pontoPositivoComEsseNome == null)
			{
				return false;
			}
			else
			{
				return true;
			}
		}
		catch(DAOException e)
		{
			throw new DAOException(e);
		}
	}

}
